package org.ala.tcp_feign_common.msg.biz;

import org.ala.tcp_feign_common.msg.IByteMessageDecoder;

import io.netty.buffer.ByteBuf;


/**
 * [0x05 | 消息总长(4字节) | 消息id(8字节) | 发消息时间戳(8子节) | 消息体（不定长）]
 * 
 * @author 骆毅(ala)
 * @date 2024年4月19日
 */
public class BizByteMessageDecoder implements IByteMessageDecoder<BizByteMessage> {

	@Override
	public BizByteMessage decoding(ByteBuf byteBuf, int len) {
		BizByteMessage msg = new BizByteMessage();
		
		//	消息类型（1子节）
		//	消息体总长（4子节）
		
		//	消息id
		msg.setMsgId(byteBuf.readLong());
		//	发消息时间戳
		msg.setTimestamp(byteBuf.readLong());
		
		//	消息体
		byte[] bytes = new byte[len - 8 - 8];
		if (bytes.length > 0) {
			byteBuf.readBytes(bytes);
		}
		msg.setBody(bytes);
		
		return msg;
	}

}
